춤추는망고
컴퓨터처럼 생각하고, 말하듯 코딩하기
🏠
Home
Algorithm
📒
Course
📒
Programmers
Computer Science
📒
Crash Course
📒
Major Knowledge
Technical Interview
📒
Data Structure
Experience Storage
📒
Review Storage
TIL
2021
02
📒
01~06
📒
07~13
📒
14~20
📒
21~28
03
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~31
04
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~30
05
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~31
06
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~30
07
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~31
08
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~31
09
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~30
10
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~31
11
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~30
12
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~31
2022
01
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~31
02
📒
01~07
📒
08~14
📒
15~21
📒
22~28
03
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~31
04
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~30
05
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~31
06
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~30
07
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~31
08
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~31
09
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~30
10
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~31
11
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~30
12
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~31
2023
01
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~31
02
📒
01~07
📒
08~14
📒
15~21
📒
22~28
03
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~31
04
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~30
05
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~31
06
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~30
07
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~31
08
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~31
09
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~30
10
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~31
11
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~30
12
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~31
2024
01
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~31
02
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~29
03
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~31
04
📒
01~07
📒
08~14
📒
15~21
📒
22~28
📒
29~30
Idea Pocket
📒
Life Algorithm
Memory Store
📒
Memos
📒
Tips

33. 암호학

November 18, 2021

hello world

해당 포스트는 아래 수업의 내용을 바탕으로 작성되었습니다.

- Youtube : ‘Crash Course’
- Professor : ‘Carrie Anne Philbin’

0. 시작하기에 앞서,

지난 두 편의 수업에서는, 여러 주제와 함께 컴퓨터 보안에 관한 전반적인 개념들을 살펴봤다.

  • 그런데, 사실, 안전성이 100% 보장되는 컴퓨터 보안 체계는 이 세상에 존재하지 않는다.
  • 어떤 소프트웨어라도 항상 버그는 있으며, 보안 전문가들 또한 이러한 사실을 알고 있다.

때문에, 체계 설계자(system architect) 는, 여러 보안 메커니즘을 활용하는 전략을 사용한다.

  • 이렇게, 보안 메커니즘을 중첩하여 계층을 형성하면, 공격자의 침입을 지연시킬 수 있다.
  • 방어보다는 지연에 집중하는 이러한 전략을, ‘심층 방어(Defense In Depth)’ 라고 한다.

심층 방어 전략은, 옛사람들이 성(castle) 을 설계하고, 적을 방어하던 방식에 비유할 수 있다.

  • 왕좌에 침입하기 위해, 화살을 피하고, 호를 지나, 벽을 넘고, 경비병을 쓰러뜨려야 했다.
  • 물론, 이번 수업에서는, 컴퓨터 보안의 ‘암호학(Cryptography)’ 에 대해 다뤄볼 것이다.

1. 암호의 기본 개념

‘Cryptography’ 라는 단어의 어근은 ‘crypto’ 와 ‘graphy’ 이며, 대충 해석하면 ‘비밀 적기’ 다.

  • 어떤 정보를 남들이 알아볼 수 없게 만들려면, ‘암호(Cipher)’ 알고리즘을 사용해야 한다.
  • 암호 알고리즘은 평문을 암호문으로 변환하는데, 이 암호문을 해석하려면 키가 필요하다.

사실, 암호문은, 암호를 풀 수 있는 키가 없다면, 의미를 알 수 없는 문자들의 집합에 불과하다.

  • 이 때, 암호를 이용해 평문을 암호문으로 바꾸는 절차를 ‘암호화(encryption)’ 라 부른다.
  • 반대로, 암호문을 다시 원래의 평문으로 바꾸는 절차는 ‘복호화(decryption)’ 라 부른다.

이러한 암호는, 오늘날 우리가 사용하는 컴퓨터가 등장하기보다 훨씬 더 오래전부터 사용됐다.

  • 실제로, 고대 로마의 정치가 율리우스 카이사르는 비밀 편지를 보낼 때 암호를 사용했다.
  • 참고로, 해당 암호는 현재, ‘카이사르 암호(Caesar Cipher)’ 라는 이름으로 불리고 있다.

카이사르는 편지의 내용을 암호화하기 위해서, 각 문자를 세 자리 앞에 있는 문자로 치환했다.

  • 간단하게 로마자 알파벳을 예로 들어 살펴보면, 알파벳 ‘A’ 는 ‘D’ 로 바뀌게 되는 것이다.
  • 이를 ‘brutus’ 라는 단어에 그대로 적용한다면, 암호화된 형태는 ‘euxwxv’ 가 될 것이다.
  • 이러한 암호문을 풀려면, 암호 알고리즘과 키 역할을 하는 이동 횟수를 모두 알아야 한다.
  • 이 때, 비밀 메시지를 받은 사람에게는, 알파벳 이동 횟수가 복호화에 사용할 키가 된다.

2. 치환 암호와 전치 암호

이러한 카이사르 암호는, ‘치환 암호(Substitution Cipher)’ 라는 암호 기술의 유형 중 하나다.

치환 암호는, 평문에 포함된 모든 문자를, 문자 단위로 변환하는 방식의 암호화 기술이다.


기초적인 치환 암호 기술이 갖는 치명적인 단점은, 문자의 등장 빈도수가 보존된다는 것이다.

  • 영어로 작성된 어떤 문장이나 글이 있다고 했을 때, 가장 자주 등장하는 알파벳은 ‘E’ 다.
  • 만약, 암호 알고리즘이 알파벳 ‘E’ 를 ‘X’ 로 변환했다면, ‘X’ 가 가장 많이 등장할 것이다.

숙련된 ‘암호 분석가(Cryptanalyst)’ 는 이러한 유형의 통계를 활용하여 암호를 풀기도 한다.

  • 암호문에 등장한 알파벳의 빈도수를 조합하여, 암호화 과정을 반대로 재현하는 것이다.
  • 심지어, 이러한 방식의 암호 해독 작업이 활용된 사례가, 실제로 역사 속에도 존재한다.
  • 1587년, 스코틀랜드의 메리 여왕은, 치환 암호 방식의 암호문이 해독되어, 처형당했다.
  • 그 암호문에는, 엘리자베스 여왕을 암살하려는 음모에 대한 내용이 적혀있었다고 한다.

암호에 관련된 또 다른 핵심적인 기술 유형으로는, ‘전치 암호(Permutation Cipher)’ 가 있다.

‘주상 전치 암호(Columnar Transposition Cipher)’ 라는 암호 기술을 간단하게 살펴보자.

우선, 임의의 메시지가 준비된 상황이라 가정하고, 어떤 격자(grid) 에 문자들을 채워 넣는다.
  • 기술 설명에 더 집중하기 위해, 작은 크기(5 * 5) 의 격자를 사용한다고 가정할 것이다.

위에서 격자에 옮겨 적은 문자들을 평범하지 않은 순서로 읽는 방식으로 암호화를 진행한다.
  • 왼쪽 아래에서부터, 아래에서 위로, 왼쪽부터 한 번에 한 열씩 읽어나간다고 가정한다.
  • 이렇게 새로 정렬된 순서를 순열(permutation) 이라고 하며, 이 순열이 암호문이 된다.

이 때, 해당 암호 알고리즘에서 키 역할을 하는 것은 문자를 정렬하는 순서와 격자의 크기다.
  • 암호문의 내용과 키를 알고 있으면, 절차를 역순으로 진행해, 평문으로 해독할 수 있다.

3. 에니그마

1900년대에는, 이러한 암호학 기술들은 암호화 기계의 형태로 기계화(mechanized) 되었다.

  • 이 시기에 등장한 암호화 기계 중 가장 유명한 것은 아마 독일의 에니그마 기계일 것이다.
  • 에니그마는, 세계 대전 당시, 독일의 나치군이 통신을 암호화하기 위해 사용했던 기계다.

‘15. 앨런 튜링’ 수업에서 다뤘듯, 에니그마는, 키보드와 램프판이 있는 타자기 형태의 기계다.

  • 에니그마를 구성하는 타자기와 램프판에는, 로마자 알파벳 26자가 전부 표시되어 있다.
  • 이러한 요소들 위에는, 암호화 기능의 핵심, 설정 가능한 회전자(rotor) 가 여러 개 있다.

우선, 이러한 여러 개의 회전자 중 하나를 골랐다고 가정하고, 내부를 더 자세하게 살펴보자.

이러한 회전자의 한 면에는, 로마자 알파벳 26자에 각각 대응되는 26개의 전기 접점이 있다.

이러한 접점들은 각각, 여러 개의 전선을 통해, 다른 면에 있는 전기 접점들과 연결되어 있다.
  • 이렇게 연결된 두 접점이, 각각 어떤 철자를 가리키고 있는지에 따라, 문자가 치환된다.

만약 'H' 를 가리키는 접점이 'K' 를 가리키는 접점과 연결되어 있다면, 'H' 가 'K' 로 치환된다.
  • 마찬가지로, ‘K’ 와 ‘F’ 를 가리키는 접점들이 연결되었다면, ‘K’ 가 ‘F’ 로 치환될 것이다.
  • 이를 통해, 에니그마가 위에서 살펴본 치환 암호를 활용하는 기계라는 것을 알 수 있다.

하지만, 에니그마는 3개 이상의 회전자를 서로 연결해서 사용하기 때문에 훨씬 더 정교하다.
  • 또한, 각 회전자가 가질 수 있는 초기 회전 상태는, 알파벳의 수, 즉, 총 26가지가 된다.
  • 게다가, 이렇게 서로 다른 회전 상태를 가진 회전자들을 임의의 순서로 배치할 수 있다.
  • 이렇게, 여러 경우의 수를 조합할 수 있어서, 다양한 치환 매핑 조합을 활용할 수 있다.

이러한 회전자 뒤쪽에는, 반사체(reflector) 라는 이름을 가진 특별한 회로가 연결되어 있다.
  • 반사체는, 회전자에 있는 접점들을, 각각 서로 다른 접점에 연결하도록 구성되어 있다.
  • 때문에, 입력된 신호를 다른 회전자로 전달하지 않고, 다시 되돌려 보내는 역할을 한다.

마지막으로, 기계 앞부분에는 키보드로부터의 입력 신호를 교환할 수 있는 플러그판이 있다.
  • 입력으로 들어온 개별 신호들을 선택적으로 교환함으로써, 복잡성을 대폭 늘리게 된다.


이번에는 간소화된 회로와 함께, 해당 예시의 에니그마 설정을 사용해 문자를 암호화해보자.

'H' 키가 눌린 경우, 플러그판을 통해 전기가 흘러 들어와, 회전자를 거쳐 반사체에 전달된다.
  • 해당 전기 신호는, 반사체를 통해 회전자로 돌려보내지고, 다시 플러그판으로 전달된다.
  • 결국, 그 전기 신호는 램프판으로 전달되어, 알파벳 ‘L’ 에 해당하는 램프가 빛나게 된다.
  • 이렇게, 키보드로 입력된 전기 신호가 램프판에 전달되어, ‘H’ 가 ‘L’ 로 암호화된 것이다.

여기서 주목할 점은, 반대편에서 전기 신호를 입력해도, 전체적인 흐름이 유지된다는 것이다.
  • 때문에, 똑같은 상황에서 키보드의 ‘L’ 키를 누르면, ‘H’ 에 해당하는 램프가 빛나게 된다.
  • 이를 다시 말하면, 암호화와 복호화 둘 다, 같은 절차를 통해 수행된다는 것을 의미한다.
  • 암호문을 보내는 기계와 받는 기계의 초기 설정이 서로 같은지만 확인하면 되는 것이다.


회로 구성을 조금 더 자세히 살펴보면, 문자 자체를 암호화할 수는 없다는 사실을 알 수 있다.

이는, 에니그마가 사용하는 암호화 방식의 아킬레스건이었고, 암호 해독의 열쇠가 되었다.


마지막으로 살펴볼 에니그마의 특징은, 이러한 치환 암호 방식의 단순함을 보완하는 설계다.

  • 암호화가 수행될 때마다, 어떠한 규칙에 따라 회전자가 한 칸씩 이동하도록 설계되었다.
  • 각 회전자의 회전 상태가 바뀌는 규칙은, 자동차의 주행 거리계와 비슷하다고 보면 된다.
  • 예를 들어, ‘AAA’ 를 입력하면, 회전자 설정이 계속 바뀌어서 ‘BDK’ 가 나오게 될 것이다.

4. 데이터 암호화 표준

에니그마 기계를 통해 암호화된 암호문들은 확실히 당시 기술력으로는 복호화하기 힘들었다.

  • 하지만, ‘15. 앨런 튜링’ 수업에서 살펴봤듯, 앨런 튜링과 그의 동료들은 해독에 성공했다.
  • 그들은 당시, 블레츨리 공원에서 기계를 만들고, 암호문 해독 절차 대부분을 자동화했다.

하지만, 컴퓨터가 등장하면서, 하드웨어 중심의 암호학 기술들은, 소프트웨어 중심이 되었다.

  • 대표적인 예로, ‘데이터 암호화 표준(Data Encryption Standard, DES)’ 을 들 수 있다.
  • 이는 IBM과 NSA가 개발한 암호 알고리즘이며, 1977년에 완성되어 사용되기 시작했다.
  • DES는 초기에 등장한 디지털 방식의 암호 알고리즘 중 가장 널리 사용된 알고리즘이다.

알려진 바로는, DES는 원래, 56비트 길이의 이진 키를 사용하는 암호화 기술이었다고 한다.

이는, 사용 가능한 키의 개수가 2의 56승(2^56), 약 7경 2천조에 달한다는 것을 의미한다.

  • 1977년에, DES의 키를 무차별 대입 방식으로 찾을 수 있는 건 NSA밖에 없었을 것이다.
  • 왜냐하면, 당시에는 그만큼 충분한 컴퓨팅 성능을 보유한 사람이 거의 없었기 때문이다.

5. 고급 암호화 표준

하지만, 1999년대에 들어서, 기술력이 좋아지면서, DES의 안전성은 위협을 받기 시작했다.

당시, 25만 달러 가격의 컴퓨터가, 단 이틀 만에 모든 DES 키를 확인할 수 있었다고 한다.


이후 2001년, ‘고급 암호화 표준(Advanced Encryption Standard, AES)’ 이 발표되었다.

  • AES는, DES에서 사용하던 56비트 키보다 더 큰 규모의 키를 사용하도록 설계되었다.
  • 무차별 대입 공격을 시도하기 어렵도록 128, 192, 256비트 등의 크기로 정한 것이다.
  • 128비트 기준으로, 오늘날 지구상 그 어떤 빠른 컴퓨터로 시도해도 수조 년이 걸린다.

AES는, 정보를 16바이트 크기의 블록 여러 개로 나눈 후, 각 블록에 대해 암호화를 진행한다.

  • 또, 키 값을 기반으로, 일련의 치환, 전치 절차와 추가적인 연산을 10회 이상 반복한다.
  • 여기서, 암호화 반복 횟수와 키의 크기는 성능에 따른 의사결정 때문에 제한된 것이다.
  • 만약, 이메일 전송이나 웹 사이트 연결이 오래 걸린다면, 아무도 사용하지 않을 것이다.
  • 성능과 보안성의 균형을 유지함으로써, 실용적인 암호화 알고리즘을 제공하는 것이다.

이러한 특징을 갖는 AES는, 오늘날, 암호화 기술이 필요한 거의 모든 곳에서 활용되고 있다.

아이폰의 파일 암호화, 와이파이(WPA2) 정보 전송, HTTPS를 이용한 웹 사이트 접속 등

6. 암호화 키

위에서 살펴본 암호화 기술들은, 발신자와 수신자 모두에게 알려진 ‘하나의 키’ 에 의존한다.

발신자가 평문을 암호화할 때, 수신자가 암호문을 복호화할 때, 모두 같은 키가 사용된다.


과거에는, 이러한 암호화 키를 물리적인 방식을 활용해 전달하거나 구두로(orally) 공유했다.

  • 예를 들어, 전쟁 당시, 나치군은 에니그마 기계의 일일 설정을 책자에 기록하여 배부했다.
  • 하지만, 이러한 방식은 인터넷이 통용화된 시대에서는 절대로 바람직하지 않은 방법이다.
  • 유튜브 영상 하나를 보기 위해, 암호화 키가 적힌 책을 뒤져봐야 하는 상황을 상상해보자.

이후, 공용 인터넷을 통해 암호화 키를 안전하게 보낼 방법에 대한 필요성이 커지기 시작했다.

  • 서버가 암호화 키를 별다른 보호 수단 없이 사용자에게 보낸다면, 안전하지 않을 것이다.
  • 왜냐하면, 노출된 상태로 전송된 암호화 키를 해커가 중간에 가로챌 수도 있기 때문이다.
  • 암호화 키가 해커의 손에 넘어가게 된다면, 모든 통신 내용이 복호화되어 노출될 것이다.

7. 키 교환과 일방향함수

개방된 환경에서의 암호화 키 노출 문제는, ‘키 교환(Key Exchange)’ 을 통해 해결할 수 있다.

  • 키 교환은, 키를 직접 전송하거나 교환하지 않고, 서로의 키에 대해 합의하는 방법이다.
  • 이러한 키 교환 작업은, ‘일방향함수(One-Way Function)’ 를 활용하여 처리할 수 있다.
  • 여기서 일방향함수란, 계산하는 것은 쉽지만, 역함수를 구하기는 어려운 함수를 뜻한다.

암호화 키를 페인트라 생각하고, 키 교환 과정에서 일방향함수가 어떻게 동작하는지 살펴보자.

  • 페인트를 섞는 것은 쉽지만, 섞인 페인트를 보고, 섞이기 전의 색들을 알아내기는 어렵다.
  • 어떤 색들이 섞인 지 알아내기 위해선, 가능한 모든 경우를 직접 확인해야 하기 때문이다.

예시에서, 페인트는 모두 고유한 색상을 가지며, 암호화 키는 이러한 페인트의 색에 대응된다.

우선, 누구나 볼 수 있는 공용 페인트 색이 있으며, 존과 캐리는 각자 비밀 페인트 색을 고른다.

비밀 색상을 교환하기 위해, 캐리는 자신이 고른 색과 공용 페인트 색을 섞어서 존에게 보낸다.
  • 이러한 혼합 색상을 보낼 때, 어떠한 매체 또는 수단을 활용하는지는 문제가 되지 않는다.

캐리가 한 것과 마찬가지로, 존도 자신이 고른 색과 공용 페인트 색을 섞어서 캐리에게 보낸다.

그런 다음, 존과 캐리는 각자 상대방으로부터 전달받은 혼합 색상에 자신이 고른 색을 섞는다.
  • 아래와 같이, 존과 캐리가 모두, 결과적으로는 같은 색을 가지게 된다는 것을 알 수 있다.


이렇게, 존과 캐리는 각자의 비밀 페인트 색을 직접 보내지 않고도, 비밀 색을 공유할 수 있다.

  • 누군가가 비밀 색을 가로채려 시도한다 해도, 부분적인 정보만 노출되니 큰 문제는 없다.
  • 왜냐하면, 혼합 색상을 알아내기 위해선, 가능한 모든 색상을 조합해봐야 하기 때문이다.

8. 디피-헬먼 키 교환

페인트 색 예시는 컴퓨터에 적용하기에 부적합하지만, 수학적인 일방향함수는 매우 적합하다.

이러한 일방향함수는 ‘디피-헬먼 키 교환(Diffie-Hellman Key Exchange)’ 에서 사용된다.


디피-헬먼 키 교환은 ‘모듈러 지수화(Modular Exponentiation)’ 를 일방향함수로 활용한다.

  • 이는, 밑수와 지수로 구성된 수를 다른 어떤 수로 나눴을 때의 나머지를 취하는 방법이다.
  • 밑수(base), 지수(exponent), 다른 어떤 수(modulus), 나머지를 각각 b, e, m, c라 한다.
  • 이러한 수학적인 관계를 수식으로 나타내면, c = b^e mod m 형태의 등식으로 표현된다.

예를 들어, 밑수가 3, 지수가 5, 다른 어떤 수가 31로 주어진 경우, 아래와 같이 계산할 수 있다.

3^5 mod 31 = 3^5 % 31 = 243 % 31 = 26

이렇게, 직접 계산하는 것은 쉽지만, 밑수와 나머지만 가지고 지수를 알아내기란 매우 어렵다.

  • 3을 다른 어떤 수만큼 거듭제곱한 후, 그 값을 31로 나눈 나머지가 7이라고 가정해보자.
  • 여기서, 다른 어떤 수가 얼마인지 알기 위해서는, 가능한 모든 지수를 확인해봐야 한다.
  • 100자리를 넘어가는 밑수를 사용하면, 지수를 찾는 것은 거의 불가능하다고 보면 된다.

이번에는 디피-헬먼 키 교환 방식에서 모듈러 지수화가 어떤 식으로 활용되는지를 살펴보자.

정확히는, 공유 암호화 키(shared secret key) 를 구하는 구체적인 과정을 알아볼 것이다.

페인트 예시의 공용 페인트 색처럼, 밑수 B와 다른 어떤 수 M은, 누구에게나 공개되어 있다.
  • 이러한 공개 정보는, 악의를 갖고 통신 내용을 가로채려는 나쁜 사람에게도 노출된다.

캐리는, 존에게 메시지를 안전하게 보내기 위해, 키 교환에 사용할 비밀 지수 X를 선택한다.
  • 그리고, 모듈러 지수화를 수행한 결과인, 아주 큰 정수, B^X mod M 를 존에게 보낸다.

마찬가지로, 존도 비밀 지수 Y를 선택한 후에 모듈러 지수화를 수행하고, 그 결과를 보낸다.
  • 이 때, 존이 캐리에게 보내는 모듈러 지수화 결과값 B^Y mod M 또한 아주 큰 정수다.

캐리는, 공유 암호화 키를 만들기 위해, 전달받은 값을 자신이 고른 값 X만큼 거듭제곱한다.
  • 이를 식으로 표현하면 (B^Y mod M)^X 이며, 이는 수학적으로 B^XY mod M 과 같다.

존도, 캐리와 마찬가지로, 전달받은 값 B^X mod M 을 자신이 고른 값 Y만큼 거듭제곱한다.
  • 이렇게 얻은 (B^X mod M)^Y 도, 수학적으로, 캐리가 얻은 값 B^XY mod M 과 같다.


마지막엔, 두 사람 모두 같은 결과를 얻게 되므로, 그 값을 공유 암호화 키로 활용하는 것이다.

  • 이렇게, 키 구성에 필요한 정보를 공개하지 않으면서, 공유 암호화 키를 생성할 수 있다.
  • 또, 이렇게 얻은 결과를 암호화 키로 하여 AES 등의 다른 암호화 기술을 사용할 수 있다.

9. 비대칭 암호화

이러한 디피-헬먼 키 교환은, 실제 사용자만 알 수 있는 공유 키를 설정하는 하나의 방법이다.

  • 이 때, 키 교환을 통해 만들어진 공유 키 하나로, 암호화와 복호화를 모두 수행할 수 있다.
  • 두 사용자가 모두 키를 사용하기 때문에, ‘대칭 키(Symmetric Key)’ 방식이라고도 한다.

지금까지 살펴본 카이사르 암호, 에니그마 기계, AES 모두, 대칭 키 방식의 암호화 기술이다.

  • 또, 서로 다른 키 두 개를 사용하는 ‘비대칭 키(Asymmetric Key)’ 방식의 암호화도 있다.
  • 비대칭 키 방식에서는 대부분, 하나의 키는 공개 상태로, 다른 하나는 비공개 상태로 둔다.
  • 때문에, 공개 키로 메시지를 암호화할 순 있지만, 비공개 키를 통해서만 복호화할 수 있다.
  • 다시 말해, 비공개 키 없이는, 공개 키를 이용한 암호화 말고 할 수 있는 게 없다는 뜻이다.
  • 이것이 비대칭 키 암호라 불리는 이유이며, 이를 공개 키 암호 방식이라고 부르기도 한다.

이번에는, 이러한 비대칭 키 암호화 방식을 자물쇠가 달린 상자와 열쇠에 비유하여 살펴보자.

캐리는 존에게서 안전하게 메시지를 받기 위해, 존에게 자물쇠가 달린 상자를 제공할 수 있다.
  • 그러면 존은, 전달받은 상자에 캐리에게 보낼 메시지를 넣은 후, 자물쇠를 잠글 수 있다.

캐리는, 존이 잠겨있는 상자를 보내도, 자신의 비밀 열쇠로 상자 속 메시지를 확인할 수 있다.


이러한 잠긴 상자를 누군가가 발견한다 해도, 무차별 대입 말고는 열 방법이 없어서 안전하다.

  • 이는, 비밀 열쇠를 갖고 있지 않은 모든 사람, 심지어, 메시지를 보낸 당사자도 해당한다.
  • 마찬가지로, 공개 키로 암호화된 디지털 정보도 비공개 키가 있어야만 복호화할 수 있다.

이와 반대로, 비공개 키로 암호화한 정보를 공개 키로만 복호화할 수 있도록 하는 경우도 있다.

  • 여기서 비공개 키는, 서버가 사용자에게 보낼 암호화된 정보에 대해 서명의 역할을 한다.
  • 이렇게 암호화된 정보는, 서버에서 제공하는 공개 키만 있으면, 누구나 복호화할 수 있다.
  • 비공개 키 없이는 암호화가 불가능하다 보니, 위조할 수 없는 서명처럼 작용하는 것이다.
  • 이러한 서명 덕분에, 사용자는 정보의 출처가 사칭 서버가 아니란 것을 보장받을 수 있다.

비대칭 키 방식의 암호화 기술 중, 오늘날 가장 널리 사용되는 것은 바로, ‘RSA 알고리즘’ 이다.

RSA라는 이름은 알고리즘을 개발한 ‘Rivest’, ‘Shamir’, ‘Adleman’ 의 이름에서 유래되었다.

10. 암호의 중요성에 관하여,

이렇게, 키 교환과 대칭/비대칭 키 암호화와 같은 현대 암호화의 핵심 기술들에 대해 알아봤다.
  • 은행 등, 보안이 중요한 웹 사이트에 접속한 후 주소창을 보면, 자물쇠 아이콘을 볼 수 있다.
  • 이러한 자물쇠 아이콘은, 현재 접속한 웹 페이지의 보안 상태가 안전하다는 것을 의미한다.
  • 그리고, 이러한 보안 상태는 지금까지 위에서 살펴봤던 여러 암호화 기술을 통해 유지된다.

  • 우선, 정보를 보낸 서버가 올바른 서버인지 검증하는 과정에서 공개 키 암호화가 활용된다.
  • 또, 통신 내용 암호화에 사용할 임시 암호화 키를 생성하기 위해, 키 교환 작업이 진행된다.
  • 마지막으로, 전체 통신 내용이 제삼자에게 노출되지 않도록, 비공개 키 암호화가 사용된다.

우리가 인터넷을 사용할 때, 이러한 암호화 기술들은 모든 것을 안전하게, 비공개로 유지해준다.

온라인으로 쇼핑할 때, 누군가에게 이메일을 보낼 때, 유튜브에서 어떤 비디오를 검색할 때 등

  • 안전한 인터넷 사용을 보장해주는 암호화 기술에 대해서, 고마움을 느낄 수 있기를 바란다.

see ya

배운 점, 느낀 점

컴퓨터가 등장하기 전에 사용되었던 아날로그 암호 알고리즘과 에니그마에 대해 배웠다.

  • 카이사르 암호는 알파벳 순서를 유지하면서 위치만 바꾸는 식의 암호 알고리즘이다.
  • 카이사르 암호와 같이, 평문을 문자 단위로 변환하는 암호 기술을 치환 암호라 한다.
  • 이러한 치환 암호는, 암호화 후에도, 문자들의 등장 횟수가 유지된다는 특징이 있다.
  • 다른 암호 기술들의 기반이 되는 기법에는 치환 암호 외에 전치 암호라는 것도 있다.
  • 전치 암호의 대표적인 예시로, 격자와 읽기 순서를 활용하는 주상 전치 암호가 있다.
  • 에니그마는 키보드, 램프판, 회전자, 반사체를 활용해 치환 암호를 수행하는 기계다.
  • 에니그마는 부품 설정을 조합해 복잡성을 높임으로써 치환 암호의 단점을 보완했다.
  • 에니그마는, 반사체라는 회로의 구조적 특징 때문에, 문자 자체를 암호화할 수 없다.
  • 하지만, 문자를 입력할 때마다 회전자가 조정되어서 복호화하기가 거의 불가능했다.

컴퓨터 보안 목적으로 등장한, 소프트웨어 중심의 디지털 암호 알고리즘에 대해 배웠다.

  • 컴퓨터가 등장하면서, 하드웨어 중심이었던 암호 기술은 소프트웨어 중심이 되었다.
  • 초기에는, 56비트 이진 키를 사용하는 데이터 암호화 표준이 가장 널리 사용되었다.
  • 기술이 발전하면서, 데이터 암호화 표준 알고리즘은, 더 이상 안전하지 않게 되었다.
  • 때문에, 키의 길이를 늘려서 안전성을 더 높인 고급 암호화 표준이 등장하게 되었다.
  • 고급 암호화 표준은, 블록 단위로 여러 번의 암호화 작업을 수행하는 알고리즘이다.
  • 고급 암호화 표준은 성능, 보안성 모두 뛰어나서 오늘날 많은 곳에서 사용되고 있다.

암호화 키를 안전하게 교환하는 방법, 용도에 따라 다르게 관리하는 방법에 대해 배웠다.

  • 키 교환을 활용하면 암호화 키를 직접 전송하지 않고도 암호화 키를 교환할 수 있다.
  • 키 교환은, 키가 아닌, 키 생성에 필요한 정보를 교환하여, 키 노출 문제를 해결한다.
  • 부분적으로 정보를 노출하지만, 일방향함수를 활용하기 때문에, 안전성도 보장된다.
  • 그중, 디피-헬먼 키 교환이라는 방법은, 모듈러 지수화를 일방향함수로써 활용한다.
  • 이 때, 모듈러 지수화는 거듭제곱 연산과 나머지 연산을 활용하는 수학적 연산이다.
  • 거듭제곱을 다른 순서로 해도 결과는 그대로여서, 연산 결과를 키로 사용할 수 있다.
  • 이렇게 하나의 키로 암호화, 복호화를 모두 수행하는 방식은 대칭 키 암호라고 한다.
  • 암호화, 복호화 수행에 사용할 키를 따로 관리하는 방식은 비대칭 키 암호라고 한다.
  • 비대칭 키 암호에서는 키 하나는 공개 상태로, 다른 하나는 비공개 상태로 관리한다.
  • 목적에 따라서, 암호화에 공개 키를 사용할지, 비공개 키를 사용할지가 나뉘게 된다.

(해당 글의 작성 과정은 post/crash-course/33 (#138) 에서 확인하실 수 있습니다.)

# 컴퓨터 공학